package com.api.common.utils;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;

import java.util.Date;
import java.util.Map;

public class JwtUtil {

    private static final String KEY = "xuanmao";//设置密钥（要想非对称加密这里换成私钥）

    //接收业务数据,生成token并返回
    public static String genToken(Map<String, Object> claims) {
        return JWT.create()
                .withClaim("claims", claims)//token中加入用户信息
                .withExpiresAt(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 12))//设置超时时间
                .sign(Algorithm.HMAC256(KEY));//设置加密类型及密钥
    }

    //接收token,验证token,并返回业务数据
    public static Map<String, Object> parseToken(String token) {
        //去除token的前缀标记"Bearer "
        var newToken = token.contains("Bearer ")?token.substring("Bearer ".length()):token;
        return JWT.require(Algorithm.HMAC256(KEY))//要想非对称加密这里换成公钥
                .build()
                .verify(newToken)
                .getClaim("claims")
                .asMap();
    }

}
